package JianZhiOffer;



/**
 * 旋转数组的最小数字
 *
 * 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。输入一个递增排序的数组的一个旋转，输出旋转数组的最小元素。
 * 例如，数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转，该数组的最小值为1。
 * */
class Solution11 {


    /**
     * 暴力法
     * 获取最后一个数A
     * 从左边开始找，找到第一个小于A的
     * */
    public int minArray(int[] numbers) {
        int temp = numbers[numbers.length-1];
        for(int i=0;i<numbers.length;i++){
            if(numbers[i] < temp){
                return numbers[i];
            }
        }
        return temp;
    }

    /**
     * 使用二分法：
     * 1. i,j找到中间值M，如果i=j,则返回结果
     * 2. M与array[j]对比，如果M大，则最小数字在[M,j]中,重复步骤1
     * 3. M与array[j]对比，如果M小，则最小数字在[i,M]中,重复步骤1
     * 4. M与array[j]对比，如果相等，则j = j - 1,重复步骤1
     * */

}